home *** CD-ROM | disk | FTP | other *** search
-
- regc(0, "COMBINED_XFORM")
- regc(4, "MODEL_XFORM")
-
- regc(8, "TEXTURE0_XFORM")
-
- regc(12, "FOG_PARAMS")
-
- regc(14, "CAMERA_POS_MS")
-
- vshader("
-
- #define point v0
- #define normal v1
- #define tangent v2
- #define tcoord v3
-
- #define fogp c12
- #define cpos c14
-
- vs_1_1
-
- #include <cardef.h>
- #include <fog.inc>
-
- dcl_position point
- dcl_normal normal
- dcl_tangent tangent
- dcl_texcoord tcoord
- ; output position
- m4x4 oPos, point, c0
- ; output texcoords
- dp4 oT0.x, tcoord, c8
- dp4 oT0.y, tcoord, c9
- // binormal = tangent x normal
- mov r0.xyz, normal
- mul r1.xyz, r0.yzxw, tangent.zxyw
- mad r0.xyz, r0.zxyw, tangent.yzxw, -r1
-
- ; output tangent -> world-space xform
- dp3 oT2.x, tangent, c4
- dp3 oT3.x, tangent, c5
- dp3 oT4.x, tangent, c6
-
- dp3 oT2.y, r0, c4
- dp3 oT3.y, r0, c5
- dp3 oT4.y, r0, c6
-
- dp3 oT2.z, normal, c4
- dp3 oT3.z, normal, c5
- dp3 oT4.z, normal, c6
-
- ; E in tangent space
- add r1, cpos, -point
- dp3 oT1.x, tangent, r1
- dp3 oT1.y, r0, r1
- dp3 oT1.z, normal, r1
-
- ; calc fog
- dp4 r0.x, point, c2
- FOG(r0.x, fogp, r10)
- ")
-
-